Lecture 6 - Subnetting

مقدمة: ما هو الـ Subnetting؟

الـ Subnetting ببساطة هو تقسيم الشبكة الكبيرة لشبكات أصغر اسمها Subnets.
ليه بنعمل كده؟ لأن عدد عناوين IPv4 محدود جداً، فمحتاجين نستخدمها بكفاءة أعلى وبدون هدر.
مثال من المحاضرة: شركة عندها الشبكة 37.1.1.0/24 اللي فيها 256 عنوان. بدل ما نديها كلها لأوفيس واحد، بنقسمها على الأربع أوفيسات (كل أوفيس فيه 50 يوزر).


1. IPv4 Address Classes (Classful Addressing)

دي معلومة أساسية لازم تحفظها عن تقسيم الشبكات القديم:

Class First Octet (Binary) Range Default Prefix
A 0xxxxxxx 0 – 127 /8
B 10xxxxxx 128 – 191 /16
C 110xxxxx 192 – 223 /24
D 1110xxxx 224 – 239 Multicast
E 1111xxxx 240 – 255 Reserved

المشكلة في النظام ده؟ منظمة IANA كانت بتدي الشركات Class بالكامل حسب حجمها (Class A و B للشركات الكبيرة، C للصغيرة). وده أدى لـ هدر كبير جداً في العناوين!

مثال واضح للهدر:

لو عندك شبكة 203.0.113.0/24 وفيها Router بس (محتاج عنوانين لـ R1 و R2)، بيتهدر منك 252 عنوان!


2. CIDR (الحل للمشكلة)

في 1993، منظمة IETF قدمت CIDR (Classless Inter-Domain Routing) وألغت قيود الـ Classes الثابتة.


3. حساب عدد العناوين (القواعد الذهبية)

عشان تحسب عدد الـ Subnets وعدد الأجهزة (Hosts):

القوانين الأساسية

  • عدد الـ Subnets = 2x (حيث x = عدد الـ borrowed bits المُستعارة).
  • إجمالي العناوين = 2n (حيث n = عدد الـ host bits).
  • العناوين القابلة للاستخدام (Usable Hosts) = 2n2.

ليه بنطرح 2؟ لأن فيه عنوانين محجوزين في كل Subnet ومش بيستخدموا للأجهزة:

  1. Network Address (عنوان الشبكة).
  2. Broadcast Address (عنوان البث).

جدول Class C المهم (/24):

Prefix Subnet Mask Host Bits Usable Hosts
/25 255.255.255.128 7 126
/26 255.255.255.192 6 62
/27 255.255.255.224 5 30
/28 255.255.255.240 4 14
/29 255.255.255.248 3 6
/30 255.255.255.252 2 2

4. تقنية الـ Block Size والحل السريع

دي أسرع طريقة تحل بيها أي مسألة Subnetting من غير ما تتلخبط.

أ. إيجاد الـ Block Size

ب. كيفية إيجاد أي Subnet رقم X مباشرة

بدل ما تقعد تحسب من الأول وتزود واحدة بواحدة، استخدم المعادلة دي:

عنوان بداية الـ Subnet = (رقم الـ Subnet المطلوب - 1) × Block Size

أمثلة تطبيقية سريعة

لو الـ Block Size = 2:

  • عايزين Subnet رقم 100:
    2×(1001)=99×2=198
    (إذن الشبكة هتبدأ من 172.16.198.0/23).
  • عايزين Subnet رقم 29:
    2×(291)=28×2=56
    (إذن الشبكة هتبدأ من 172.16.56.0/23).

5. تقسيم الشبكة عملياً (Class C)

مثال 1: تقسيم 192.168.1.0/24 لـ 4 Subnets (كل واحدة 45 جهاز)

  1. كم host bits نحتاج؟ محتاجين 45 + 2 = 47. أقرب 2n أكبر من 47 هي 26=64.
    إذن نحتاج 6 Host bits.
  2. الـ Prefix الجديد: بما إن الـ host bits = 6، إذن 326=26. الـ Prefix هيكون /26.
  3. حساب الـ Subnets: (بما إن /26 بتدي بلوك سايز = 64):
Subnet Network Address Usable Range Broadcast Address
1 192.168.1.0/26 .1 ➡️ .62 192.168.1.63
2 192.168.1.64/26 .65 ➡️ .126 192.168.1.127
3 192.168.1.128/26 .129 ➡️ .190 192.168.1.191
4 192.168.1.192/26 .193 ➡️ .254 192.168.1.255

💡 Trick: كل Subnet بيبدأ من بعد الـ Broadcast Address بتاع الـ Subnet اللي قبله!

مثال 2: تقسيم 192.168.255.0/24 لـ 5 Subnets


6. تحديد الـ Host ده تبع أنهي Subnet؟

سؤال: الجهاز 192.168.5.57/27 موجود في أي شبكة؟

الطريقة (باستخدام الـ Binary):

  1. الـ /27 معناها أول 27 bit هم الـ Network، وآخر 5 bits هم الـ Host.
  2. حوّل الرقم الأخير 57 لـ Binary ➡️ 00111001
  3. صفّر آخر 5 bits (الخاصين بالـ Host) ➡️ 00100000 اللي هي بتساوي 32 بالديسيمال.
  4. يبقي الجهاز ده في شبكة 192.168.5.32/27

7. Class B Subnetting

في Class B الـ default prefix هو /16، يعني عندنا 16 Host bits.

مثال: 172.16.0.0/16 ⬅️ عايزين نقسمها لـ 80 Subnet

  • أقرب 2x أكبر من 80 هي 128 (يعني هنستلف 7 bits).
  • الـ Prefix الجديد هيكون 16+7=23. يبقي نستخدم /23 .

جدول Class B السريع:

Prefix Subnets Hosts/Subnet
/17 2 32,766
/18 4 16,382
/19 8 8,190
/20 16 4,094
/21 32 2,044
/22 64 1,022
/23 128 510
/24 256 254

8. Class A Subnetting

نفس المبدأ بالظبط، بس بنبدأ من /8.

مثال: PC1 عنوانه 10.217.182.223/11

  • Network Address: 10.192.0.0/11
  • Broadcast Address: 10.223.255.255/11
  • First Usable: 10.192.0.1/11
  • Last Usable: 10.223.255.254/11
  • عدد الـ Hosts: 2212=2,097,150


9. ملخص الامتحان

  1. ا 2n2 = عدد الـ Usable Hosts (حيث n = عدد الـ Host bits).
  2. ا 2x = عدد الـ Subnets (حيث x = عدد الـ Borrowed bits).
  3. لتحديد الـ Subnet ID: صفّر كل الـ Host bits.
  4. لتحديد الـ Broadcast: فعّل كل الـ Host bits (خليهم كلهم 1).
  5. كل Subnet جديد بيبدأ من: الـ Broadcast السابق + 1.
  6. الـ Block Size = 256SubnetMask (للأوكتيت المتغير).
  7. إيجاد بداية أي Subnet رقم X = (X1)×BlockSize.

Nour Eldeen Mahmoud


Powered by Forestry.md